import Cookies from 'js-cookie'

const TokenKey = 'mall_token'

/**
 * 获取Token
 * 优先从Cookies获取，若没有则从localStorage获取
 */
export function getToken() {
    try {
        const token = Cookies.get(TokenKey) || localStorage.getItem(TokenKey) || sessionStorage.getItem(TokenKey)
        if (token) {
            console.log('已获取到token:', token.substring(0, 20) + '...')
        } else {
            console.log('未找到token')
        }
        return token
    } catch (error) {
        console.error('获取token失败:', error)
        return null
    }
}

/**
 * 设置Token
 * 同时存储在Cookies和localStorage中
 */
export function setToken(token) {
    if (!token) {
        console.error('设置token失败: token为空')
        return false
    }

    try {
        console.log('保存token:', token.substring(0, 20) + '...')

        // 尝试存储在多个位置，以防某一个方式失败
        try { localStorage.setItem(TokenKey, token) } catch (e) { console.error('localStorage存储失败:', e) }
        try { sessionStorage.setItem(TokenKey, token) } catch (e) { console.error('sessionStorage存储失败:', e) }
        try { Cookies.set(TokenKey, token) } catch (e) { console.error('Cookies存储失败:', e) }

        return true
    } catch (error) {
        console.error('保存token失败:', error)
        return false
    }
}

/**
 * 移除Token
 * 同时从Cookies和localStorage中移除
 */
export function removeToken() {
    try {
        console.log('移除token')

        // 从所有存储位置移除
        try { localStorage.removeItem(TokenKey) } catch (e) { console.error('localStorage移除失败:', e) }
        try { sessionStorage.removeItem(TokenKey) } catch (e) { console.error('sessionStorage移除失败:', e) }
        try { Cookies.remove(TokenKey) } catch (e) { console.error('Cookies移除失败:', e) }

        return true
    } catch (error) {
        console.error('移除token失败:', error)
        return false
    }
}

/**
 * 检查Token是否存在
 */
export function hasToken() {
    return !!getToken()
} 